package com.campanyes.utils;

import java.io.File;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;

import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;

import com.campanyes.entitites.Configuracion;
import com.campanyes.entitites.ConsultasBBDD;
import com.campanyes.entitites.Opositor;
import com.campanyes.entitites.Utils;

public class BuscarPersona {
	
	private static final Logger logger = Logger.getLogger(BuscarPersona.class);

	public Opositor getOpositorDeFila(Sheet sheet, int fila){
		Utils utils = new Utils();
		Cell celda = null;
		
		Opositor opositor = null;
		try{
			celda = sheet.getCell(2, fila);
		    String DNI =  utils.prepararDNI(celda.getContents());
					
			celda= sheet.getCell(3, fila);
			String cognom1= utils.prepararString(celda.getContents());
					
			celda= sheet.getCell(4, fila);
			String cognom2 = utils.prepararString(celda.getContents());
					
			celda= sheet.getCell(5, fila);
			String nom = utils.prepararString(celda.getContents());
					
			celda= sheet.getCell(6, fila);
			String merits = celda.getContents();
					
			celda= sheet.getCell(7, fila);
			String fisiques = celda.getContents();
					
			celda= sheet.getCell(8, fila);
			String nfinal = celda.getContents();
			
			opositor = new Opositor(DNI, nom, cognom1, cognom2, merits, fisiques, nfinal);
		}catch(Exception e){
			e.printStackTrace();
			//
		}
		
		return opositor;		
	}
	
	
	public static void main(String [] args) throws BiffException, IOException, ClassNotFoundException, SQLException {
		
		PropertyConfigurator.configure(args[0]+args[2]);
		
		Configuracion conf = new Configuracion(args[0], args[1]);
		Class.forName(conf.getBBDD_DRIVER());		
		Connection conexion = DriverManager.getConnection ("jdbc:mysql://"+conf.getBBDD_HOST()+"/"+conf.getBBDD_DATABASE(),conf.getBBDD_USER(), conf.getBBDD_PASSWORD());
		Statement s = conexion.createStatement();
		
		String busqueda = "ROCA";
		BuscarPersona leer = new BuscarPersona();
		
		List<String> listaRegions = new ArrayList<String>();
		
		listaRegions.add("Todos");
		listaRegions.add("Centre");
		listaRegions.add("Ebre");
		listaRegions.add("Girona");
		listaRegions.add("Lleida");
		listaRegions.add("Nord");
		listaRegions.add("Sud");
		listaRegions.add("Tarragona");
		
		
		
		String anyo = "2011";

		for(int i=0; i<listaRegions.size(); i++){
			String region = (String) listaRegions.get(i);
			logger.info("Inicio del proceso para la region "+region);
			leer.buscarPersona(busqueda, region, anyo);	
			logger.info("Fin del proceso para la region "+region);
		}
		
	
	}
	
	public void buscarPersona(String busqueda, String region, String anyo) throws BiffException, IOException{
		BuscarPersona leer = new BuscarPersona();		
		
		//Leemos el fichero Excel
		Workbook workbook = Workbook.getWorkbook(new File("files/Todosyseparadas.xls"));        
		
		Sheet sheet = workbook.getSheet(region);
       		
		int i;
		
        for(i=1; i<sheet.getRows(); i++){
        	Opositor opositor = leer.getOpositorDeFila(sheet, i); 
        	if(		busqueda.equalsIgnoreCase(opositor.getCognom1()) ||
        			busqueda.equalsIgnoreCase(opositor.getCognom2()) ||
        			busqueda.equalsIgnoreCase(opositor.getNom())
        			){
        		System.out.println(region);
        		System.out.println(opositor);
        	}
        		
        	        	        	        	                	
        }
        
        logger.info("Se han procesado "+i+" opositores para la region "+region);
              
        workbook.close();        
		
	}
}
